#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll a[200005];ll n;
ll sum[200005];
ll nrst[1000005];
ll lowbit(ll x){
	return x&(-x);
}
void add(ll p,ll ad){
	for(int i=p;i<=n;i+=lowbit(i)){
		sum[i]+=ad;
	}
	return;
}
void updt(ll l,ll r,ll ad){
	add(l,ad),add(r+1,-ad);
}
ll ask(ll p){
	if(p==0)return 0;
	ll cnt=0;
	for(int i=p;i;i-=lowbit(i)){
		cnt+=sum[i];
	}
	return cnt;
}
int main(){
	freopen("color.in","r",stdin);
	freopen("color.out","w",stdout);
	ll t;scanf("%lld",&t);
	while(t--){
		for(int i=0;i<200005;i++)sum[i]=0;
		for(int i=0;i<1000005;i++)nrst[i]=0;
		scanf("%lld",&n);ll mx=0,ans=0;
		for(int i=1;i<=n;i++)scanf("%lld",&a[i]);
		for(int i=1;i<=n;i++){//cout<<i<<' '<<nrst[a[i]]+1<<endl;
			//dp[j-1]=dp[nrst[a[i]]]+a[j]
			//updt i
			if(nrst[a[i]]!=0){
				updt(i,i,max(ask(nrst[a[i]]+1)+a[i],ask(mx)));
			}
			else updt(i,i,ask(mx));
			//updt nrst
			if(i!=n&&a[i+1]==a[i]){
				if(i!=1&&a[i-1]==a[i])nrst[a[i]]=i-1;
			}
			else nrst[a[i]]=i;
			// updt etc
			if(a[i]==a[i-1])updt(1,i-1,a[i]);
			//updt mx
			if(ask(i)>=ask(mx))mx=i;
		}
		for(int i=1;i<=n;i++)ans=max(ans,ask(i));
		printf("%lld\n",ans);
	}
	return 0;
}	
